'use strict'

const titbit = require('./node_modules/titbit');
const {cookie , session} = require('./node_modules/titbit-toolkit');

const app = new titbit({
    debug:true
});

app.use(async (c,next)=>{
    if (c.query.key !== '12345') {
        return c.status(403).send('deny')
    }
    await next();// 如果不写await next就会执行完这个之后就会停止，next就是下个处理函数，可以是另外的app.use或者其他路由，下面的new session中也封装await next，根据洋葱模型，实际上应该是后添加的先执行，但是这样不便于逻辑理解，而use就是添加后按顺序执行，便于逻辑理解
},{group:'session'})

app.use(async (c,next)=>{  // 无论执行哪一个路由都会执行这些use
    let startTime=Date.now();
    await next();
    let endTime = Date.now();
    console.log(endTime-startTime,'ms')
})
app.use(new cookie).use(new session);//session是基于cookie扩展的，所以必须先启用cookie再启用session，cookie和session不一定同时存在
app.use(async (c,next) => {
    console.log('home start');
    await next();
    console.log('home end')
})  //,{group:'home',method:['GET']}// 此处指这个use只会针对路由分组为home且请求方法为GET的请求执行，其他请求不执行


app.get('/', async c => {
    c.send('ok');
},{name:'主页',group:'home'})// 此处是将该路由命名为主页并分组为home

app.get("/sess/:x/:y" , async c => {
    c.setSession('x' , c.param.x);
    c.setSession('y' , c.param.y);

    c.send(c.getSession());


},{group:'session'})

app.run(6005);